Django 查询数据

通过django提供的 QuerySet API,可以非常方便的查询数据,从数据库中查询出来的结果是一个集合,这个集合叫做 QuerySet。

QuerySet有个很好的性能机制,即QuerySets是懒惰的,只有遇到类似save,print等方法才会真正的操作数据库。


1,查询所有数据


使用all()方法,可以查询某张表的所有数据

比如要查询 任务表 里所有数据,可以这样写:

task_list = Tasks.objects.all()


2,按条件查询


使用 filter()方法,可以按条件查询数据

比如要查询 任务表 里 任务名称为 abc 的数据:

task_list = Tasks.objects.filter(task_name='abc')


filter 方法可以多条件查询,但要注意多个条件是 ‘并’的关系

比如要查询 任务表 里,任务名称为xxx,且用户为‘张三’的数据:

task_list = Tasks.objects.filter(task_name='abc', task_user='张三')


以上都是条件的值必须完全匹配才能查询到数据,如 task_name='abc',只能精准查询到abc的数据

django还提供一些特殊的查询方式:


__iexact

表示不区大小写查询,如 Tasks.objects.filter(task_name__iexact='acb')

可以查询到 task_name 等于 abc,Abc, aBc,abC,ABC的数据。


__contains

表示包含查询,如 Tasks.objects.filter(task_name__contains='acb')

可以查询到 task_name 包含有  abc 的数据,如xabc,yabcd,abcyu等。


__icontains

表示不区分大小写的包含查询,如 Tasks.objects.filter(task_name__icontains='acb')

可以查询到 xabc,xAbc,yabCu等数据


__in

in查询,Tasks.objects.filter(task_user__in=['张三', '李四'])



__startswith

表示以什么开头的查询,如 Tasks.objects.filter(task_name__startswith='acb')

可以查询以到如 abcaa,abcxxx,abckkk等以abc开头的数据


__endswith

表示以什么结尾的查询,如 Tasks.objects.filter(task_name__endswith='acb')

可以查询到如 iuabc,xxabc等以abc结尾的数据


3,排序


使用order_by()方法可以查询结果排序,默认按正序排

Tasks.objects.all().order_by('task_end_date')


可以在排序字段前面加-,表示倒序

Tasks.objects.all().order_by('-task_end_date')



4,排除条件的查询

exclude方法是查询除排满足条件的数据


Tasks.objects.exclude(task_user__contains="张三") 

表示查询排除包含  张三 的数据


Tasks.objects.filter(task_name__contains="abc").exclude(task_user='张三')

表示查询任务名称包含abc,但排除张三的数据


该文章对你有帮助吗,求分享转发: 分享到QQ空间 分享给QQ好友

 

 

粤ICP备19116230号
友情链接: 码农藏书阁 天天链